
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author anderzanic
 */
public class Jogo implements Serializable {

    private static Jogo jogo = null;
    
    private Map<String, Jogador> jogadores;
    private String palavra;
    private String dica;

    public Jogo() {
    }
    
    public static Jogo getInstance() {
        if(jogo == null || jogoCompleto()) {
            System.out.println("Novo jogo.");
            jogo = new Jogo();
        }
        
        return jogo;
    }

    public Map<String, Jogador> getJogadores() {
        return jogadores;
    }

    public void setJogadores(Jogador jogador) {

        if(getJogadores() == null) {
            jogadores = new HashMap();
        }
        
        if(!getJogadores().containsKey(jogador.getAtuacao())){
            jogadores.put(jogador.getAtuacao(), jogador);
        } else {
            throw new RuntimeException("Já temos um jogador do tipo " + jogador.getAtuacao() + " nesse jogo!");
        }
    }
    
    public String getPalavra() {
        return palavra;
    }

    public void setPalavra(String palavra) {
        this.palavra = palavra;
    }

    public String getDica() {
        return dica;
    }

    public void setDica(String dica) {
        this.dica = dica;
    }
    
    private static boolean jogoCompleto() {
        boolean completo = false;
        
        if(jogo != null) {
            if(jogo.getJogadores().size() == 2) {
                completo = true;
            }
        }
        return completo;
    }
    
    public boolean esteJogoCompleto() {
        
        boolean completo = false;
        
        if(jogo != null) {
            if(jogo.getJogadores().size() == 2) {
                completo = true;
            }
        }
        return completo;
    }
    
    public void removeJogador(Jogador jogador) {
        jogadores.remove(jogador.getAtuacao());
    }
}
